Zh Release Notes
v1.7.0
发布日期
2026 年 4 月 23 日
亮点
本次发布引入了 Datasets SDK 与 CLI,用于管理 OSS 上的基准测试数据集;新增容器根文件系统磁盘限额(基于 Docker storage-opt);重构了 Docker 认证方案,采用沙箱级临时目录隔离凭证。WebSocket 代理的头部转发策略从白名单切换为黑名单以支持自定义头部透传,沙箱容器通过挂载宿主机 zoneinfo 获得完整的 IANA 时区支持。Admin 服务新增 MetaStore 与数据库操作指标用于可观测性。
Datasets
新功能
Datasets SDK 与 CLI
-
新增: 新增
rock datasetsCLI,包含三个子命令:list(按组织/名称/split 浏览数据集)、tasks(枚举指定 split 中的 task ID,支持--offset/--limit分页)、upload(批量上传本地 task 目录至 OSS,支持并发度配置与--overwrite覆写) (#859, #875) -
新增:
OssDatasetRegistry后端,基于oss2SDK 导航datasets/{org}/{dataset}/{split}/{task_id}/键结构,同时支持目录风格与扁平文件风格的 task。OSS 凭证可通过 CLI 参数传入或存储在config.ini的[dataset]节中 (#859) -
Task 列表现在同时识别目录 task(来自
prefix_list)和文件 task(来自object_list),自动去除后缀并去重 (#875)
Sandbox
新功能
容器磁盘限额
-
支持通过 Docker
--storage-opt size=<value>限制沙箱根目录大小。要求overlay2存储驱动 + XFS 文件系统 +prjquota挂载选项。通过xfs_quota对沙箱日志目录设置 XFS project 配额,要求 XFS 文件系统 +prjquota挂载选项。 (#860) -
服务端
RuntimeConfig通过新增的disk_limit_rootfs与disk_limit_log(均默认为None)字段可在rock-{args.env}.yml中按环境配置沙箱根目录和沙箱日志目录的限额,并支持 Nacos 运行时覆盖 (#860)
沙箱时区支持
- 新增: 容器现在获得完整的 IANA 时区支持 — ROCK 将宿主机的 zoneinfo 文件(如
/usr/share/zoneinfo/Asia/Shanghai)以只读方式挂载到容器的/etc/localtime。宿主机缺少对应 zoneinfo 文件时自动跳过并输出警告 (#883)
Admin
MetaStore 与数据库操作指标
- 新增: 为
SandboxMetaStore和SandboxTable的 CRUD 操作添加 OpenTelemetry 指标埋点。每个操作(create、get、update、delete、list、batch_get、archive 等)均自动采集 total/success/failure 计数器及响应时间 gauge (#887)
Deployments
Docker 认证重构
-
移除传统 Docker 认证方案,改用临时目录方案。
TempAuthDockerClient上下文管理器为每个沙箱创建隔离的临时目录,在其中执行docker --config <tmpdir> login与镜像拉取,退出时自动清理 — 避免注册表凭证持久化到全局 Docker 配置 (#837) -
临时认证目录的基础路径可通过
ROCK_DOCKER_TEMP_AUTH_DIR环境变量配置,默认使用系统临时目录 (#837)
Proxy
WebSocket Header转发
/sandboxes/{id}/proxy/{path:path}接口支持header转发,所有客户端头部默认转发至上游服务,仅过滤 WebSocket 握手头(sec-websocket-*)、逐跳头(connection、upgrade、transfer-encoding、content-length)及host。origin头部做特殊处理 — 单独提取并作为 WebSocket origin 参数传入,VNC WebSocket 接口关闭该功能,避免超出 QEMU 的 4 KB 头部缓冲区限制(#865)
Bug 修复
-
修复
auto_clear_time计算问题:auto_clear_seconds / 60产生的小数分钟数现通过math.ceil()向上取整至至少 1 分钟;同时将进程存活轮询的wait_interval限制为小于auto_clear_seconds,防止沙箱在首次存活检测前被自动清理 (#883) -
修复 UV 环境构建:项目文件树现在先复制到可写的
/tmp/rock-build目录再执行uv pip install,解决容器内源码只读挂载导致的安装失败 (#857)
测试与 CI
-
新增
DockerUtil辅助函数的单元测试(detect_storage_opt_support、is_xfs_path、get_docker_root_dir)及DockerDeployment磁盘限额集成测试 (#860) -
新增 Docker 临时目录认证方案的集成测试 (#837)
-
数据库连接单元测试与参数优化 (#852)
-
清理 TS SDK model client 测试中泄漏的定时器 (#839)
迁移说明
-
Docker 认证: 传统 Docker 认证方案已移除。如果此前依赖 ROCK 写入
~/.docker/config.json中的持久凭证,请注意 ROCK 现在使用临时目录方案。可通过ROCK_DOCKER_TEMP_AUTH_DIR自定义临时目录位置。 -
WebSocket 代理头部: 如果您的下游服务依赖特定的转发头部集合,请注意现在所有非屏蔽头部均会被转发。屏蔽集合包括
host、connection、upgrade、sec-websocket-*、transfer-encoding和content-length。 -
磁盘限额: 磁盘配额为服务端策略 —
disk_limit不在SandboxStartRequest中暴露。请通过环境 YAML 或 Nacos 覆盖配置RuntimeConfig.disk_limit_rootfs/disk_limit_log。